在TX2上基于GStreamer推流pipeline 您所在的位置:网站首页 xavier 摄像头 在TX2上基于GStreamer推流pipeline

在TX2上基于GStreamer推流pipeline

2023-10-08 23:21| 来源: 网络整理| 查看: 265

最近研究了一段时间的GStreamer,略有心得,也想把收获记录下来。

GStreamer简介

GStreamer 是一个创建流媒体应用程序的框架,支持Windows,Linux,Android, iOS等平台,该框架设计是基于插件的,应用程序可以通过管道(Pipeline)的方式,将多媒体处理的各个步骤串联起来,达到预期的效果。每个步骤通过元件(Element)基于GObject对象系统通过插件(plugins)的方式实现,使得编写任意类型的流媒体应用程序成为了可能 。

Pipeline介绍

Gstreamer的基本概念如元件(elements)、衬垫(pads)、箱柜(bins)、总线(bus)和管道(pipelines)等都是GStreamer的基本概念,不一一展开。Pipeline继承自bin,是一种特殊的箱柜,pipeline会为其内部所有的element选择一个相同的时钟,同时还为应用提供了bus系统,用于消息的接收。

GObject ╰──GInitiallyUnowned ╰──GstObject ╰──GstElement ╰──GstBin ╰──GstPipeline

一个典型的pipeline如下,读取本地文件,两个线程分别处理音频和视频数据,最后通过sink元件显示。 在这里插入图片描述

可推流的完整Pipeline

任务是需要完成读取1080P摄像头并实时推流。参考了很多前人的工作,发现有些pipeline在我的TX2上没法跑出来,另外arm架构下才可以用gst-omx硬件加速插件。我的环境是Ubuntu18.04 + GStreamer1.14,通过不断测试,以下管道是能顺利跑通的。

1、摄像头直接推1080P流到RTMP服务器,延时10秒

gst-launch-1.0 -v v4l2src device=/dev/video0 ! videoconvert ! omxh264enc ! 'video/x-h264, stream-format=(string)byte-stream' !\ queue ! h264parse ! flvmux ! rtmpsink location='rtmp://*******'

2、摄像头直接推720P流到RTMP服务器,延时5秒

gst-launch-1.0 -v v4l2src device=/dev/video0 ! autovideoconvert ! omxh264enc ! 'video/x-h264, stream-format=(string)byte-stream ,width=1280, height=720' \


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有